package main

import (
	_ "github.com/go-sql-driver/mysql" // 导入 MySQL 驱动
	"github.com/jinzhu/gorm"
)

func main() {
	// 用户名：密码@tcp(ip:port)/数据库?charset=utf8&parseTime=True&loc=Local
	db, err := gorm.Open("mysql", "root:123456@tcp(localhost:3306)/gorm_project?charset=utf8&parseTime=True&loc=Local")
	if err != nil {
		panic(err)
	}

	defer db.Close() // 关闭空闲的连接

	// 增加
	//article := relation_table.Article2{
	//	Title:   "python全栈开发",
	//	Content: "python基础内容",
	//	Desc:    "python开发细节",
	//	Tags: []relation_table.Tag{{
	//		Name: "Django",
	//		Desc: "django框架",
	//	}, {
	//		Name: "flask",
	//		Desc: "flask框架",
	//	}},
	//}
	//
	//ret := db.Create(&article)
	//fmt.Println(ret.Error)

	// 方式二

	//tag := relation_table.Tag{Name: "spring", Desc: "spring框架"}
	//db.Create(&tag)
	//
	//article := relation_table.Article2{
	//	Title:   "java语言",
	//	Content: "java语言语言基础",
	//	Desc:    "java语言语言开发入门",
	//	Tags: []relation_table.Tag{
	//		tag,
	//	},
	//}
	//
	//db.Create(&article) // 不会重复插入前面create的数据

	// 查询
	//var article relation_table.Article2

	// Preload
	//db.Debug().Preload("Tags").Find(&article, 1)
	//fmt.Println(article)

	// Association
	//db.First(&article, 1)
	//db.Debug().Model(&article).Association("Tags").Find(&article.Tags)
	//fmt.Println(article)

	// Related
	//db.First(&article, 1)
	//var tags []relation_table.Tag
	//db.Model(&article).Related(&tags, "Tags")
	//fmt.Println(article)
	//fmt.Println(tags)

	// 更新   先查询后更新
	//db.Preload("Tags").First(&article, 2)

	//db.Debug().Model(&article.Tags).Where("name = ?", "gin").Update("name", "beego")
	//db.Debug().Model(&article.Tags).Where("name = ?", "beego").Update("desc", "gin框架")
	//db.Debug().Model(&article.Tags).Where("name = ?", "beego").Update("name", "gin")

	// 删除  -> 先查询在删除
	//var article relation_table.Article2
	//db.Debug().Preload("Tags").Find(&article, 4)
	//
	//// 删除
	//db.Debug().Where("name=?", "spring").Delete(&article.Tags)
	//fmt.Println(article)

}
